Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~
在本系列文會展開使用 Avalonia UI 技術所建立的 TopAOAIConnector App 。由於使用 Avalonia UI 可以很快速的進行各平台的 桌面 應用程式開發,並且透過此 TopAOAIConnector App 來串接 Azure OpenAI Service 時所需的功能研究。
本篇是 就是要來點 A.I. 的 TopAOAIConnector App 系列文的 EP23。
在 EP 19 有提到要客製化設定系統角色扮演 Prompt。隨著這個脈絡與前一回已經讓畫面 UI 有紀錄此系統角色扮演 Prompt 的相關處理,那本回繼續來處理能跟 Chat 橋接的部分!
由於在前一回已經多設計了 ChatSystemRole 這個類別來使用,繼續來擴增此類別的設計:
public static ObservableCollection<ChatSystemRole> InstanceItems { get; set; }
static ChatSystemRole()
{
InstanceItems = [];
}
變更完成如下圖紅框:
接著找到 ViewModels/ChatPageViewModel,並變更一下其建構式的程式如下:
if (SystemRoles.Count > 0)
{
SelectedSystemRole = SystemRoles[0];
messages.Add(ChatMessage.CreateSystemMessage(SelectedSystemRole.Prompt));
}
並將原本設計的 SystemRoles 變更其型態與設定其內容的資料來源,不再使用直接寫死的物件內容:
public ObservableCollection<ChatSystemRole> SystemRoles { get; } = ChatSystemRole.InstanceItems;
在把先前設計 _selectedSystemRole 型態變更為所設計的 ChatSystemRole:
public ChatSystemRole? _selectedSystemRole;
變更完成如下圖紅框:
接著就是原本使用 KeyValuePair 取值是靠 Value ,現在因為改變成 ChatSystemRole 所以是靠 Prompt 屬性來設定,一處是在 Add 方法;另一處是在 Selected 方法:
SelectedSystemRole!.Prompt
變更完成如下圖紅框:
當然隨著型態設計的改變,也必須變更 Views/ChatPageView.axmal 的 XAML 設定:
Name
變更完成如下圖紅框:
最後再次回到 ViewModels/SettingPageViewModel 這個 SettingPageViewModel 類別的建構式設定,將原本撰寫:
ChatSystemRoles ??= [];
變更為:
ChatSystemRole.InstanceItems = ChatSystemRoles ??= [new() { Name = "Default System Role", Prompt= "你是協助人員尋找資訊的 AI 助理。" }];
變更完成如下圖紅框:
這樣可以讓程式在一開始在無任何由使用者設定的 System Role 時,也會有個預設的 System Role 帶入。
執行偵錯(F5)看看。
切換到 SettingPage:
ComboBox 當中有預設 System Role 資料:
輸入想新增的 System Role 資料:
ComboBox 當中新增完成:
切換到 ChatPage 的 ComboBox 也出現同樣的資料:
完成!!!